--- olld/date.inc	Fri Nov 27 11:22:40 2009
+++ date.inc	Fri Nov 27 11:12:30 2009
@@ -13,24 +13,41 @@
  */
 function date_feeds_node_processor_targets_alter(&$targets, $content_type) {
   $info = content_types($content_type);
+  
+  // Here we are being asked to list sub fields we would like to map to.
+  $sub_fields = array();
+  $sub_fields['ical'] = 'iCal VEVENT';
+  $sub_fields['start_date'] = 'Start Date (date only)';
+  $sub_fields['start_time'] = 'Start Time (time only)';
+  $sub_fields['start_datetime'] = 'Start Date (date and time)';
+  $sub_fields['start_stamp'] = 'Start Date (timestamp)';
+  $sub_fields['end_date'] = 'End Date (date only)';
+  $sub_fields['end_time'] = 'End Time (time only)';
+  $sub_fields['end_datetime'] = 'End Date (date and time)';
+  $sub_fields['end_stamp'] = 'End Date (timestamp)';
+  $sub_fields['all_day'] = 'All Day';
+  $sub_fields['timezone'] = 'Timezone';
     
   // The $info['fields'] holds CCK fields such as date and links.  
   if (isset($info['fields']) && count($info['fields'])) {
     foreach ($info['fields'] as $field_name => $field) {
 
       // Check to see if the field type is a date (CCK).
-      if ($field['type'] == 'date') {
+      //There are 3 type of date fields: date, datetime and datestamp (deprecated but used to support legacy data).
+      if (in_array($field['type'], array('date', 'datestamp', 'datetime'))) {
       
         // Set the name for the source label to be the label of the field or the field name if no label exists
         $name = isset($field['widget']['label']) ? $field['widget']['label'] : $field_name;
-	
-	//Sets the targets to map
-	$targets[$field_name.'#date'] = array(
-          'name' => $name . ' (' . t('date').')',
-          'callback' => 'date_feeds_set_target',
-          'description' => t('The Date for the CCK !name field of the node.', array('!name' => $name)),
-        );
 
+          foreach ($sub_fields as $sub_field => $f) {
+
+            //Sets the targets to map
+            $targets[$field_name.'#'.$sub_field] = array(
+            'name' => $name . ' (' . $sub_field .')',
+            'callback' => 'date_feeds_set_target',
+            'description' => t('The '.$f.' for the !name field of the node.', array('!name' => $name)),
+            );
+          }
       }
     }
   }
@@ -46,22 +63,53 @@
   * In plain English, maps the source elemnts to the target.
  */
 function date_feeds_set_target(&$node, $target, $values) {
-  //For argument sake, $target = field_date#date
+  //Check to see if we are actuall passed any values to map, if not just return.
+  if (empty($values)) {
+    return;
+  }
 
   //Seperate out component parts. $field_name should be set to field_date, $sub_field to date.
   list($field_name, $sub_field) = split('#', $target);
-  
+
   //Set $field to    $node->field_date   OR    a blank array...
   $field = isset($node->$field_name) ? $node->$field_name : array();
   
+  switch ($sub_field) {
+    case 'ical':
+      //TODO: Port code from 'FeedAPI' module - Function feedapi_mapper_date_ical($node, $field, $feed_element);
+      return;
+
+    case 'start_datetime':
+    case 'end_datetime':
+      //TODO: Port code from 'FeedAPI' module - Function feedapi_mapper_date_datetime($node, $field, $feed_element, $sub_field);
+      return;
+
+    case 'start_stamp':
+    case 'end_stamp':
+      //TODO: Port code from 'FeedAPI' module - Function feedapi_mapper_date_stamp($node, $field, $feed_element, $sub_field);
+      return;
+
+    default:
+      /**
+       * Includes:
+       *    start_date
+       *    start_time
+       *    end_date
+       *    end_time
+       *    all_day
+       *    timezone
+       */
+      //TODO: Port code from 'FeedAPI' module - Function feedapi_mapper_date_part($node, $field, $feed_element, $sub_field);
+      return;
+  }
+
   // Handle multiple value fields.
-  if (is_array($values)) {
+  /*if (is_array($values)) {    
     $field[0]['value'] = $values['DATE']['DTSTART']['datetime'];
     $field[0]['value2'] = $values['DATE']['DTEND']['datetime'];  
   }
   else {
     $field[0]['value'] = $values;
   }
-
-  $node->$field_name = $field;
+  $node->$field_name = $field;*/
 }
